package com.ruoyi.shop.member.service;

import java.util.List;

import com.ruoyi.shop.member.domain.ShopMember;

/**
 * 会员用户Service接口
 * 
 * @author xuxiang
 * @date 2022-10-21
 */
public interface IShopMemberService {

	/**
	 * 查询会员用户
	 * 
	 * @param memberId 会员用户主键 Long类型
	 * @return 会员用户
	 */
	public ShopMember selectMemberById(Long memberId);

	/**
	 * 查询会员用户列表
	 * 
	 * @param ShopMember 会员用户
	 * @return 会员用户集合
	 */
	public List<ShopMember> selectMemberList(ShopMember member);

	/**
	 * 新增会员用户
	 * 
	 * @param ShopMember 会员用户
	 * @return 结果
	 */
	public int insertMember(ShopMember member);

	/**
	 * 修改会员用户
	 * 
	 * @param ShopMember 会员用户
	 * @return 结果
	 */
	public int updateMember(ShopMember member);

	/**
	 * 删除会员用户信息
	 * 
	 * @param memberId 会员用户主键
	 * @return 结果
	 */
	public int deleteMemberById(Long memberId);

	/**
	 * 通过账号(登录账号或手机号)查询会员用户
	 * 
	 * @param userName 账号
	 * @return 会员用户
	 */
	public ShopMember selectMemberByUserName(String userName);

	/**
	 * 通过登录账号查询会员
	 * 
	 * @param loginName 登录账号
	 * @return 会员用户
	 */
	public ShopMember selectMemberByLoginName(String loginName);

	/**
	 * 通过手机号查询会员
	 * 
	 * @param mobile 手机号
	 * @return 会员用户
	 */
	public ShopMember selectMemberByMobile(String mobile);

	/**
	 * 校验email是否唯一
	 *
	 * @param user 会员用户
	 * @return 结果
	 */
	public String checkEmailUnique(ShopMember member);

	/**
	 * 校验手机号是否唯一
	 *
	 * @param member 会员
	 * @return 结果
	 */
	public boolean checkMobileUnique(ShopMember member);

	/**
	 * 修改用户基本信息
	 * 
	 * @param user 会员用户
	 * @return 结果
	 */
	public int updateMemberProfile(ShopMember member);

	/**
	 * 重置用户密码
	 * 
	 * @param user 用户信息
	 * @return 结果
	 */
	public int resetPwd(ShopMember member);

	/**
	 * 重置用户密码
	 * 
	 * @param userName 账号
	 * @param password 密码
	 * @return 结果
	 */
	public int resetPwd(Long memberId, String password);

	/**
	 * 修改用户头像
	 * 
	 * @param userName 账号
	 * @param avatar   头像地址
	 * @return 结果
	 */
	public boolean updateAvatar(String loginName, String avatar);

	/**
	 * 注册用户信息
	 * 
	 * @param user 用户信息
	 * @return 结果
	 */
	public boolean registerMember(ShopMember member);

	/**
	 * 自动生成会员账号
	 * 
	 * @return
	 */
	public String generateLoginName();

	/**
	 * 绑定手机号
	 * 
	 * @param memberId
	 * @param mobile
	 * @return
	 */
	public int bindMobile(Long memberId, String mobile);
}
